<?PHP
	namespace Home\Model;
	use Think\Model;
	class FolderModel extends Model{
		protected $_validate=array(
		array('folder_name','1,100','长度请在1-100个字符之内',1,'length',3),
		);
		
		/**
		 *该函数用于判断收藏夹名字是否已经存在
		 ×$ownerId 用于定位收藏夹的主人
		 ×folderName 是要判断的收藏夹名字
		 *return 不存在返回true ,存在返回false
		**/
		protected function isDataExists($ownerId,$folderName){
			$exist=$this->field('folder_name')->where("folder_name='%s' and owner_id=%d",$folderName,$ownerId)->find();
			if($exist !== null){
				$this->lastErrorMessage='该目录已经存在';
				return false;
			}
			return true;
		}
		
		
		/**
		 *该函数用于创建收藏夹
		 ×$ownerId 用于定位收藏夹的主人
		 ×$postData 是一个数组 是创建收藏夹的名字
		 *return 错误返回false 正确返回 $folder_id; 
		**/
		public function addFolder($ownerId,$postData){
			$postData['owner_id']=$ownerId;
			$data=$this->create($postData,1);
			if($data){
				$isExistes=$this->isDataExists($ownerId,$postData['folder_name']);
				if(!$isExistes){
					return false;
				}
				$folder_id=$this->field('owner_id,folder_name')->add($data);
				if($folder_id=== false){
					$this->lastErrorMessage='添加folder失败，请联系管理员';
					return false;
				}
				return $folder_id;
			}else{
				$this->lastErrorMessage=$this->getError();
				return false;
			}
		}
		
		
	    /**
		 *该函数返回特定用户的特定数量的收藏夹
		 *$ownerId 用户id 
		 ×$page 当前分页的索引 默认为0
		 ×$limit 每页显示的数量 默认每页显示10条
		 ×return 如果查询出错，select的返回值是false，如果查询结果为空，则返回NULL，否则返回二维数组。
		**/
		public function findFolderByOwenerId($ownerId,$page=0,$limit=10){
			$ownerId=intval($ownerId);
			$page=intval($page);
			$limit=intval($limit);
			$records=$this->field('folder_id,folder_name')->where("owner_id=%d",$ownerId)->page($page,$limit)->select();
			return $records;	
		}
		
		/**
		 *该函数返回特定用户全部收藏夹
		 *$ownerId 用户id 
		 ×return 如果查询出错，select的返回值是false，如果查询结果为空，则返回NULL，否则返回二维数组。
		**/
		public function getAllFolder($ownerId){
			$ownerId=intval($ownerId);
			$records=$this->field('folder_id,folder_name')->where("owner_id=%d",$ownerId)->select();
			return $records;	
		}
		
		
		
		/**
		 *函数根据$folderId返回指定id的folder的名字
		 ×$folderId 收藏夹名字对应的id
		 ×return 如果查询出错，select的返回值是false，如果查询结果为空，则返回NULL，否则返回二维数组。
		**/
		
		public function findFolderNameByFolderId($folderId){
			$folderId=intval($folderId);
			$records=$this->field('folder_name')->where("folder_id=%d",$folderId)->find();
			return$records;
		}
		
		
		/**
		 *重命名收藏夹的名字
		 ×$ownerId 是收藏夹的属于人id
		 ×$folderId 是收藏夹的id号码
		 ×$postData 是收藏夹重命名名字 是一个数组
		 × return 返回值是修改的记录数，如果返回值是false则表示SQL出错，返回值如果为0表示没有修改任何数据
		**/
		public function renameFolderName($ownerId,$folderId,$postData){
			$ownerId=intval($ownerId);
			$folderId=intval($folderId);
			$data=$this->create($postData,3);
			if($data){
				$isExistes=$this->isDataExists($ownerId,$postData['folder_name']);
				if(!$isExistes){
					return false;
				}
				$affectRow=$this->where("owner_id=%d and folder_id=%d",$ownerId,$folderId)->save($data);
				return $affectRow;
			}else{
				$this->lastErrorMessage=$this->getError();
				return false;
			}
			
			
		}
		
		
		/**
		 *删除指定id的 收藏夹
		 ×$ownerId 是收藏夹的属于人id
		 ×$folderId 是收藏夹的id号码
		 × return 返回值是删除的记录数，如果返回值是false则表示SQL出错，返回值如果为0表示没有删除任何数据
		**/
		public function deleteFolder($ownerId,$folderId){
			$ownerId=intval($ownerId);
			$folderId=intval($folderId);
			$affectRow=$this->where("folder_id=%d and owner_id=%d ",$folderId,$ownerId)->delete();
			return $affectRow;
		}
		
		
	}